
/*
 * HOJA DE TRABAJO NO.6
Nodo.java
Autor: Luis Antonio Sigüenza Leiva
Carné: 10297
Fecha: 06 de septiembre del 2011
 * Descripcion: clase que permite crear un nodo.
*/

//******************************************************************
//REFERENCIA DE CLASE TOMADA DEL LIBRO:
//Java Structures: Data Structures for the Principled Programmer
//Capitulo 8: Listas. Pagina 179-217
//******************************************************************

//Método constructor (predefinido) el cual inicializa el objeto
public class Nodo<E>
{
    protected E data; // value stored in this element
    protected Nodo<E> nextElement; // ref to next
    
//Método constructor (personalizado) el cual inicializa el objeto    
 public Nodo(E v, Nodo<E> next){
    // pre: v is a value, next is a reference to remainder of list
    // post: an element is constructed as the new head of list
    this.data = v;
    this.nextElement = next;
    }
 
//Método constructor (personalizado) el cual inicializa el objeto
public Nodo(E v){
    // post: constructs a new tail of a list with value v 
    this(v,null);
}

//Méetodo que hace referencia al siguiente elemento de la lista
public Nodo<E> next(){
    // post: returns reference to next value in list
    return nextElement;
}

//Método que define un nuevo nodo
public void setNext(Nodo<E> next){
    // post: sets reference to new next value
    this.nextElement = next;
}

//Método que define un nuevo elemento del nodo
public void setData(E datos){
    // post: sets reference to new next value
    this.data = datos;
}

//Método que retorna el valor del elemento referenciado
public Nodo <E> getNext(){
    // post: returns value associated with this element
    return nextElement;
}
//Método que retorna el valor del elemento referenciado
public E getData(){
    // post: returns value associated with this element
    return data;
}

//Método que permite conocer si existe un nuevo elemento para el nodo
public boolean hasNext(){
    if(nextElement !=null){
        return true;
    }
    else{
        return false;
    }
    
      
}

}